Swift 中提供了許多控制流的方式,在此篇文章我們會個別講解他的用途和使用時機。
前面在介紹集合的時候,我們就會常常使用到 For - in 方式來遍歷整個集合內的內容。
你也可以遍歷一個字典,我們使用元組方式使他返回一個 ( key, value ) 的元組,在下面的例子中我們就將科目設為它的鍵值,成績為它的值,並將其解果 print 出來。
這裡有需要注意的一點,創建 Dictionary 出來的順序並不等於你遍歷時候的順序。
For - in 循環也能遍歷數字區間,我們簡單地做出一個 99 乘法表中 5 的內容。
在這個範例中 index 是一個常量,它的值在每次循環開始的時候被自動設置。因此,它不需要在使用之前聲明。它隱式地在循環中聲明了,不需要再用 let 聲明關鍵字。
For - in 在使用時如果你不需要序列的每一個值,可以使用下劃線 ( _ ) 代替。這個例子我們試做計算 2 的 10 次方。
在這個範例中,不需要紀錄他循環的值,只要按照我們次數操作循環,所以我們使用下劃線代替。
在某些時候我們也可以限制他的區間,例如我們希望我們的數字執行到 ten 就結束,但上述的範例卻循環了 11 次。這時,我們可以使用( ..< )方式,使他在到達 ten 的時候中斷循環。
當如果你不希望資料總是沒有間隔的方式呈現,你也能使用 stride 方式告訴他你的限制條件,這裡的範例我們想顯示 100 內的從 0 開始計算的每次間隔為 10 的數字。 其中 to 的方式會在 100 之前停止運作,through 則是包含 100。
while 循環簡單來說就是會一直重複執行循環直到條件不符合 (false) 為止就停止循環。在 Swift 中提供了我們兩種的 While 循環 , while 以及 repeat - while 。
while 方式會在開始前檢查條件是否符合 (true)。在這邊我們也用 while 的方式實作一個九九乘法中的 5 ,我們告訴他 i = 1 ,並在每次循環結束都讓 i + 1 直到 i 不小於 10 。
他與 while 方式不同,他是在結束時檢查條件是否符合,我們使用 repeat - while 方式實做一樣的範例。
*假如一開始初始值就大於條件的話,只有 repeat - while 會執行一次,因為他是在執行完才檢查條件。
很多時候我們要的不是重複循環一些程式碼,而是希望系統能夠判斷程式法正確或錯誤時,該怎麼執行下一步。又或者我們希望他根據不同的狀況,來執行不同的應對。在此, Swift 也提供了兩種判斷的語法給使用者使用。 if 以及 switch 。
if 比較適合簡單的條件,像是對錯條件,我們會在當條件等於 true 的時候去執行它。
我們也能在後方加上 else 來表示當條件為 false 時該執行些什麼。
你也可以在 else 後方繼續加上 if 語法繼續判斷。
switch 就可以被應用在比較複雜的情況了,可以將一個值與多個可能的模式匹配,每種情況會對應到某一個 case 去執行。也可能同時有多種 case 符合,但只會執行第一個符合的 case,在你無法預期所有的 case 時,你也可以設一個 default 去涵蓋所有條件。
當沒有符合 case 上的條件時,switch 則會執行 default 中的程式。
case 中也可以同時包含兩個值或多個值。
當你不想停止程式碼,繼續執行的話,可以使用 fallthrough 繼續執行下一段程式碼。
大概用一張圖就能說明區間匹配明白的意思,就是在 case 中加入區間提供判斷。
當你在需要將匹配的值臨時設為一個常量或變量時,就會用到值綁定的功能,因為值是在情況的函數體裡“綁定”到臨時的常量或者變量的。因此,當我們想知道這個點是落在 x , y 軸上,又或者是隨便座落一個點上,這時我們就能透過值綁定看見他的值。
控制流的部分大致上介紹到這邊,下篇文章會教大家控制控制流。念起來都這麼繞舌了,想必原本打結的就打更多結了